package hxy.bytecode.datastruct;

import java.util.Objects;

/**
 * @author eric
 * @link https://www.jianshu.com/p/da2c0129c270
 */
public class Book {
    private String name;
    private String author;

    /**
     * 重写equals必然要重写hashCode
     * 根据hashcode的规则，两个对象相等其哈希值一定相等
     *
     * @param obj
     * @return
     * @link https://blog.csdn.net/xl_1803/article/details/80445481
     */
    @Override
    public boolean equals(Object obj) {
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }
        if (obj instanceof Book) {
            Book book = (Book) obj;
            if (Objects.equals(book.getAuthor(), this.author) && Objects.equals(book.getName(), this.name)) {
                return true;
            }
        }
        return super.equals(obj);
    }

    @Override
    public int hashCode() {
        int result = 17;
        result = result * 31 + name == null ? 0 : name.hashCode();
        result = result * 32 + Objects.hashCode(author);
        return result;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }
}
